/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.upc.dew.cobranzas.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import pe.edu.upc.dew.cobranzas.model.Trabajador;

public class TrabajadorDaoImpl implements TrabajadorDao {

    private List<Trabajador> trabajadores;

    public TrabajadorDaoImpl() {
        this.trabajadores = new ArrayList<Trabajador>();
        this.cargarTrabajadores();
    }

    private void cargarTrabajadores() {

        Connection connection = null;
        Trabajador trabajador = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            connection = ConnectionUtils.getConnection();
            st = connection.createStatement();
            rs = st.executeQuery("select * from T_Trabajador");
            rs.next();
            do {

                trabajador = new Trabajador();
                trabajador.setDni(rs.getString("dni"));
                trabajador.setNombre(rs.getString("nombre"));
                trabajador.setApePaterno(rs.getString("apePaterno"));
                trabajador.setApeMaterno(rs.getString("apeMaterno"));
                trabajador.setCargo(rs.getString("cargo"));

                this.trabajadores.add(trabajador);

            } while (rs.next());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            ConnectionUtils.closeResultSet(rs);
            ConnectionUtils.closeStatement(st);
            ConnectionUtils.closeConnection(connection);
        }

    }

    public Trabajador getTrabajadorPorDni(String dni) {
        Trabajador trabajador = new Trabajador();
        for (int i = 1; i <= this.trabajadores.size(); i++) {
            if (this.trabajadores.get(i - 1).getDni().equals(dni)) {
                trabajador = this.trabajadores.get(i - 1);
                break;
            }
        }

        return trabajador;
    }

    public List<Trabajador> Listado() {
        return this.trabajadores;
    }
}

